SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


CREATE  PROCEDURE [dbo].[SP_TTPAGO_MASI_I06]                  
/*-------------------------------------------------------*/                  
/*---Empresa              : OFISIS S.A.                --*/                  
/*---Cliente              : OFISIS                     --*/                  
/*---Sistema              : Tesoreria                  --*/                  
/*---Mcdulo               : Empresa                    --*/                  
/*---Programa             : Grabacicn Cabecera         --*/                  
/*---                       Movimiento Bancos (Egresos)--*/                  
/*---Script               : tcmovi_b.sql               --*/                  
/*---Nombre SP            : SP_TTPAGO_MASI_I01         --*/                  
/*---Desarrollado por     : Denis Villacrés P.         --*/                  
/*---Fecha Creacicn       : 06/01/2004                 --*/                  
/*---Base Datos           : Microsoft Sql Server       --*/                  
/*---Versicn              : 2000                       --*/                  
/*---Invoca a SP          :                            --*/                  
/*-------------------------------------------------------*/                  
/*-------------------------------------------------------*/                    
/*---Modificado 1 por     : Maribel Julca Rodriguez     --*/                    
/*---Fecha Modificaci«n   : 20/04/2005                  --*/                     
/*---Detalle Modificaci«n : ingreso de los campos CO_USUA_CREA Y CO_USUA_MODI--*/              
/*-------------------------------------------------------*/              
/*-------------------------------------------------------*/                    
/*---Modificado 2 por     : Carlos Marquez Escobar  --*/                    
/*---Fecha Modificaci«n   : 01/01/2006                  --*/                     
/*---Detalle Modificaci«n : Se adiciono Campo Conciliacíon--*/              
/*-------------------------------------------------------*/                 
/*-------------------------------------------------------*/                    
/*---Modificado 3 por     : Luis Avila Poma      --*/                    
/*---Fecha Modificaci«n   : 26/09/2009                 --*/                     
/*---Detalle Modificaci«n : Se cambio Dato tipo de    --*/            
/*---documento, se manda directo del programa de Bancos--*/              
/*---Validacion de documentos (CHEQUES)       --*/              
/*-------------------------------------------------------*/                  
/*-------------------------------------------------------*/                 
/*---Comentarios                                       --*/                  
/*---                                                  --*/                  
/*---                                                  --*/                  
/*-------------------------------------------------------*/                  
/*-------------------------------------------------------*/                  
/*---Drop Proc DR_TTPAGO_MASI_I06                      --*/                  
/*---Grant Execute on DR_TTPAGO_MASI_I06 to public     --*/                   
/*---DR_TTPAGO_MASI_I06                                --*/                  
/*-------------------------------------------------------*/                  
          
                  
 as                  
   Declare                  
   @VNCO_NUEV_NUME TD_IN_001,                   
   @VSCO_NUEV_CHAR TD_VC_008,                  
   @VNNU_REGI      TD_IN_001,                  
   @VNUL_CORR_EGRE TD_IN_001,                  
   @VNUL_CORR_AJUS TD_IN_001,                   
   @VSST_INTE_BACH TD_VC_001,                  
   @VSTI_OPNI_CARG TD_VC_003,                  
   @VSTI_OPNI_ABON TD_VC_003,                   
   --@OSTI_DOCU_EBSB TD_VC_003,     ---Documento electronico              
   @VSDE_OBSE_CABE TD_VC_050,             
   @VSNU_DOCU_CHEQ TD_VC_020,            
   @OSTI_DOCU_CHEQ TD_VC_003,             
   @VSNU_DOCU_BANC TD_VC_020,            
   @VDFE_CHEQ  TD_DT_001,    
   @VSCO_MONE_NACI TD_VC_020,    
   @VSCO_MONE_EXTR TD_VC_020 ,    
   @VSCO_MONE_CNTA  TD_VC_020,    
   @VNFA_CAMB_EXTR  TD_NU_015_006,      
  
  
 @ISCO_EMPR   TD_VC_002,                   
 @ISCO_USUA_MODI TD_VC_008_USUA,                  
 @ISCO_BANC   TD_VC_003,                   
 @ISNU_CNTA_BANC TD_VC_020,                  
 @ISAA_BNCO   TD_VC_004,                   
 @ISMM_BNCO   TD_VC_002,                   
 @ISTI_MOVI_BANC TD_VC_001,                    
 @ISNU_COMP_BANC TD_VC_008,                   
 @IDFE_OPER   TD_DT_001,                   
 @ISCO_TIPO_OPER TD_VC_003,                   
 @INFA_TIPO_CAMB TD_NU_015_006,                   
 @INIM_MOVI   TD_NU_016_004,                   
 @ISSI_SOLO_BANC TD_VC_001_SINO,                   
 @ISTI_CORR_INEG TD_VC_001,                  
 @INUL_CORR_EGRE TD_IN_001,                  
 @INUL_CORR_INEG TD_IN_001,                  
 @ISCO_ENTR_REND TD_VC_003,                  
 @ISCO_UNID_CNTB TD_VC_003,              
 @ISCO_GRUP_CONC TD_VC_020, ---Nuevo campo              
 @ISNU_SOLI   TD_VC_010,                  
 @ISCO_SUBR   TD_VC_003,                
 @ISTI_ENTI   TD_VC_001,                  
 @ISCO_ENTI   TD_VC_020,                  
 @ISDE_NOMB_ORDE TD_VC_100,                  
 @ISST_ASTO_RESU TD_VC_001,            
 @ISCO_TIPO_DOCU TD_VC_003,                   
 @ISNU_DOCU_BANC TD_VC_020,      
 @ISNU_TRAN_CHEQ TD_VC_020  
  
                  
 BEGIN TRAN SP_TCMOVI_BANC_I01                  
                  
/** inserta en la TEMPORAL **/   
SELECT  
 @ISCO_EMPR = CO_EMPR,                   
 @ISCO_USUA_MODI = CO_USUA_MODI,                  
 @ISCO_BANC = CO_BANC,                   
 @ISNU_CNTA_BANC = NU_CNTA_BANC,                  
 @ISAA_BNCO = AA_BNCO,                   
 @ISMM_BNCO = MM_BNCO,                   
 @ISTI_MOVI_BANC = TI_MOVI_BANC,                    
 @ISNU_COMP_BANC = NU_COMP_BANC,                   
 @IDFE_OPER = FE_OPER,                   
 @ISCO_TIPO_OPER = CO_TIPO_OPER,                   
 @INFA_TIPO_CAMB = FA_TIPO_CAMB,                   
 @INIM_MOVI = IM_MOVI,                   
 @ISSI_SOLO_BANC = SI_SOLO_BANC,                   
 @ISTI_CORR_INEG = TI_CORR_INEG,                  
 @INUL_CORR_EGRE = UL_CORR_EGRE,                  
 @INUL_CORR_INEG = UL_CORR_INEG,                  
 @ISCO_ENTR_REND = CO_ENTR_REND,                  
 @ISCO_UNID_CNTB = CO_UNID_CNTB,              
 @ISCO_GRUP_CONC = CO_GRUP_CONC,  
 @ISNU_SOLI = NU_SOLI,                  
 @ISCO_SUBR = CO_SUBR,                
 @ISTI_ENTI = TI_ENTI,                  
 @ISCO_ENTI = CO_ENTI,                  
 @ISDE_NOMB_ORDE = DE_NOMB_ORDE,                  
 @ISST_ASTO_RESU = ST_ASTO_RESU,            
 @ISCO_TIPO_DOCU = CO_TIPO_DOCU,                   
 @ISNU_DOCU_BANC = NU_DOCU_BANC,      
 @ISNU_TRAN_CHEQ = NU_TRAN_CHEQ  
FROM #TWTTPAGO_MASI_I06  
  
  
  
  
 /** inserta en la cabecera de bancos **/                  
               
 Select  @VSST_INTE_BACH = ST_INTE_BACH,                  
 @VSTI_OPNI_CARG = CO_TIPO_OPEG,                   
 @VSTI_OPNI_ABON = CO_TIPO_OPER,    
 @VSCO_MONE_NACI = CO_MONE_DEFA,    
 @VSCO_MONE_EXTR = CO_MONE_EXTR                 
 From    TMPARA_TESO                   
 Where   CO_EMPR = @ISCO_EMPR      
    
SELECT  @VSCO_MONE_CNTA = CO_MONE FROM TMCNTA_BANC WHERE CO_EMPR = @ISCO_EMPR    
AND CO_BANC = @ISCO_BANC AND NU_CNTA_BANC = @ISNU_CNTA_BANC    
    
IF ISNULL(@VSCO_MONE_CNTA,'')=   @VSCO_MONE_NACI OR ISNULL(@VSCO_MONE_CNTA,'')= @VSCO_MONE_EXTR begin    
 select @VNFA_CAMB_EXTR = 1.000000 end    
 else begin    
    
 select @VNFA_CAMB_EXTR = FA_VNTA_OFIC FROM TCFACT_CAMB WHERE CO_MONE = @VSCO_MONE_CNTA    
    AND CO_MONE_BASE = @VSCO_MONE_NACI    
    
End    
               
 If Rtrim(@ISCO_ENTR_REND) = ''                  
  Select @ISCO_ENTR_REND = NULL                  
               
 If @VSST_INTE_BACH = 'N' And  @ISST_ASTO_RESU = 'N' And                    
  @ISCO_TIPO_OPER != @VSTI_OPNI_CARG And  @ISCO_TIPO_OPER != @VSTI_OPNI_ABON                  
               
  Exec SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CNTB, @ISCO_TIPO_OPER, @IDFE_OPER, @ISNU_COMP_BANC OUTPUT                
               
               
 Else                  
 Begin                  
  Select  @VNNU_REGI = Count(*)                   
  From    TCMOVI_BANC                  
  Where   CO_EMPR = @ISCO_EMPR                   
  And  CO_BANC = @ISCO_BANC                   
  And  NU_CNTA_BANC = @ISNU_CNTA_BANC                   
  And  AA_BNCO = @ISAA_BNCO                  
  And  MM_BNCO = @ISMM_BNCO                   
  And  TI_MOVI_BANC = 'E'                    
  And  NU_COMP_BANC = @ISNU_COMP_BANC                  
                
  Select @VNCO_NUEV_NUME = Convert(Int , @ISNU_COMP_BANC)                  
  Select @VNUL_CORR_AJUS = 0                    
                
  If @VNNU_REGI > 0 Or Rtrim(IsNull(@ISNU_COMP_BANC, '')) = ''                  
  Begin                           
   Select  @VSCO_NUEV_CHAR = IsNull(MAX(NU_COMP_BANC), '0')                  
   From    TCMOVI_BANC                   
   Where   CO_EMPR = @ISCO_EMPR                   
   And  CO_BANC = @ISCO_BANC                   
   And  NU_CNTA_BANC = @ISNU_CNTA_BANC                   
   And  AA_BNCO = @ISAA_BNCO                  
   And  MM_BNCO = @ISMM_BNCO                   
   And  TI_MOVI_BANC = 'E'                    
   And  NU_COMP_BANC LIKE '000%'                  
                 
   Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1                  
   Select @VSCO_NUEV_CHAR = Convert(Char(8) , @VNCO_NUEV_NUME)                  
                 
   -- RELLENA DE CEROS HASTA 8 CARACTERES                   
   Select @VSCO_NUEV_CHAR = IsNull(REPLICATE('0',8- DATALENGTH(LTRIM(Rtrim(@VSCO_NUEV_CHAR)))),'') +LTRIM(Rtrim(@VSCO_NUEV_CHAR))                  
                 
   Select @ISNU_COMP_BANC = @VSCO_NUEV_CHAR                   
                 
   If @VNNU_REGI > 0                  
   Select @VNUL_CORR_AJUS = 1                   
  End                  
              
  SELECT @VNUL_CORR_EGRE = @VNCO_NUEV_NUME                   
              
 End                  
               
 --Busco el tipo de documento 'telecredito, Sudamericano Flag 24'                  
 --Select @OSTI_DOCU_EBSB = Null                  
 Select @VSDE_OBSE_CABE = Null                  
               
 --Exec SP_TTDOCU_CNTB_Q02 24, @OSTI_DOCU_EBSB  OUTPUT                
               
 Exec SP_TTDOCU_CNTB_Q02 29, @OSTI_DOCU_CHEQ  OUTPUT                  
             
 IF @ISCO_TIPO_DOCU = @OSTI_DOCU_CHEQ            
 BEGIN            
 SELECT @VSNU_DOCU_BANC = ''            
 SELECT @VSNU_DOCU_CHEQ = @ISNU_DOCU_BANC            
 SELECT @VDFE_CHEQ = @IDFE_OPER         
 END            
 ELSE            
 BEGIN            
 SELECT @VSNU_DOCU_BANC = @ISNU_DOCU_BANC            
 SELECT @VSNU_DOCU_CHEQ = ''            
 SELECT @VDFE_CHEQ = NULL            
 END            
               
 Select   @VSDE_OBSE_CABE = DE_TIPO_OPER                  
 From     TTTIPO_OPER                  
 Where    CO_EMPR = @ISCO_EMPR                  
 And CO_TIPO_OPER = @ISCO_TIPO_OPER          
    
            
               
 Insert Into TCMOVI_BANC(                  
 CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC, NU_COMP_BANC,                   
 FE_OPER, CO_TIPO_OPER, FA_TIPO_CAMB, IM_MOVI, CO_ENTR_REND, SI_SOLO_BANC, NU_CHEQ_USAD,                   
 SI_OPER_CONC, ST_CONT, TI_SITU, CO_UNID_CONC, CO_GRUP_CONC, NU_SOLI, CO_SUBR, CO_TIPO_DOCU,             
 NU_DOCU_BANC, NU_CHEQ, FE_CHEQ,              
 DE_OBSE, TI_ENTI, CO_ENTI, DE_NOMB_ORDE, CO_USUA_CREA, FE_USUA_CREA,       
 CO_USUA_MODI, FE_USUA_MODI,NU_TRAN_CHEQ,FA_CAMB_EXTR)                  
 Values (                  
 @ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC, @ISNU_COMP_BANC,                   
 @IDFE_OPER, @ISCO_TIPO_OPER, @INFA_TIPO_CAMB, @INIM_MOVI, @ISCO_ENTR_REND, @ISSI_SOLO_BANC, NULL,                   
 'N', 'N', 'ACT', @ISCO_UNID_CNTB, @ISCO_GRUP_CONC, @ISNU_SOLI, @ISCO_SUBR, @ISCO_TIPO_DOCU ,            
 @VSNU_DOCU_BANC, @VSNU_DOCU_CHEQ, @VDFE_CHEQ,             
 @VSDE_OBSE_CABE, @ISTI_ENTI, @ISCO_ENTI, @ISDE_NOMB_ORDE,       
 @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE(),@ISNU_TRAN_CHEQ,@VNFA_CAMB_EXTR)                   
               
 If @@error <> 0                  
 Begin                  
  Rollback tran                  
  Return                  
 End                  
               
/*Actualizando Chequera*/      
      
Update TTSTOC_CHEQ       
Set NU_ULTI_CHEQ= @VSNU_DOCU_CHEQ      
WHERE CO_EMPR=@ISCO_EMPR                 
And CO_BANC = @ISCO_BANC      
And NU_CNTA_BANC = @ISNU_CNTA_BANC      
And SI_CHEQ_ACTU ='S'      
      
 /* ActualizAnd o Estado y Fecha Liquidaci®n Solicitud Caja */                  
               
 Update  TMSOLI_CABA                   
 Set     TI_SITU = 'LIQ',                   
 FE_LIQU = @IDFE_OPER,                  
 CO_USUA_MODI = @ISCO_USUA_MODI,                   
 FE_USUA_MODI = Getdate()                  
 Where   CO_EMPR = @ISCO_EMPR                  
 And NU_SOLI = @ISNU_SOLI                  
               
 If @@error <> 0                  
 Begin                  
  rollback tran                  
  return                  
 End                    
               
 /* ----------- Actualiza los Correlativos ------------------ */                  
 If @VSST_INTE_BACH = 'S' OR @ISST_ASTO_RESU = 'S' OR                   
  @ISCO_TIPO_OPER = @VSTI_OPNI_CARG OR @ISCO_TIPO_OPER = @VSTI_OPNI_ABON                  
 Begin                      
               
  If @ISTI_CORR_INEG = 'N'                  
  Begin                  
   Select  @INUL_CORR_EGRE = UL_CORR_EGRE              
   From    TMSABA_MENS                  
   Where   CO_EMPR = @ISCO_EMPR                    
   And CO_BANC = @ISCO_BANC                   
   And NU_CNTA_BANC = @ISNU_CNTA_BANC                   
   And AA_BNCO = @ISAA_BNCO                   
   And MM_BNCO = @ISMM_BNCO                   
                
   Update   TMSABA_MENS                  
   Set      UL_CORR_EGRE = @INUL_CORR_EGRE + 1 + @VNUL_CORR_AJUS,               
   CO_USUA_MODI = @ISCO_USUA_MODI,                   
   FE_USUA_MODI = Getdate()                  
   Where    CO_EMPR = @ISCO_EMPR                   
   And CO_BANC = @ISCO_BANC                   
   And NU_CNTA_BANC = @ISNU_CNTA_BANC                   
   And AA_BNCO = @ISAA_BNCO                   
   And MM_BNCO = @ISMM_BNCO                  
                
   If @@error <> 0                  
   Begin                  
    Rollback tran                  
    Return                  
   End                  
  End                  
  Else                  
  Begin                  
   Select  @INUL_CORR_INEG = UL_CORR_INEG                   
   From    TMSABA_MENS                  
   Where   CO_EMPR = @ISCO_EMPR                    
   And  CO_BANC = @ISCO_BANC                   
   And  NU_CNTA_BANC = @ISNU_CNTA_BANC                   
   And  AA_BNCO = @ISAA_BNCO                   
   And  MM_BNCO = @ISMM_BNCO                   
                
   Update   TMSABA_MENS                  
   Set    UL_CORR_INEG = @INUL_CORR_INEG + 1 + @VNUL_CORR_AJUS,                   
   CO_USUA_MODI = @ISCO_USUA_MODI,                   
   FE_USUA_MODI = GETDATE()                  
   Where    CO_EMPR = @ISCO_EMPR                   
   And  CO_BANC = @ISCO_BANC                   
   And  NU_CNTA_BANC = @ISNU_CNTA_BANC                   
   And  AA_BNCO = @ISAA_BNCO                   
   And  MM_BNCO = @ISMM_BNCO                  
                
   If @@error <> 0                  
   Begin                  
    Rollback tran                  
    Return                  
   End                  
  End                  
 End                  
                  
Commit Tran                  
                  
SELECT @ISNU_TRAN_CHEQ                  
RETURN                  
                 
/*------------------------------------- Fin -------------------------------------*/  
GO
